﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DTO;
using Business;

namespace QuanLyNhaSach
{
    public partial class QuanLyNhaXuatBan : Form
    {
        public QuanLyNhaXuatBan()
        {
            InitializeComponent();
        }
        private void SetUpDataGridViewNhaXuatBan()
        {
            dgvNhaXuatBan.BackgroundColor = Color.White;
            dgvNhaXuatBan.ColumnCount = 2;
            dgvNhaXuatBan.Columns[0].Name = "Mã Nhà Xuất Bản";
            dgvNhaXuatBan.Columns[1].Name = "Tên Nhà Xuất Bản";

            dgvNhaXuatBan.Columns[0].ReadOnly = true;


            dgvNhaXuatBan.Columns[0].Width = 80;
            dgvNhaXuatBan.Columns[1].Width = 240;

            dgvNhaXuatBan.AllowUserToAddRows = true;
            dgvNhaXuatBan.AllowUserToDeleteRows = false;
            dgvNhaXuatBan.MultiSelect = false;
            dgvNhaXuatBan.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            dgvNhaXuatBan.DefaultCellStyle.SelectionBackColor = Color.Ivory; //Color.Silver;
            dgvNhaXuatBan.DefaultCellStyle.SelectionForeColor = Color.Black;
        }
        private void LoadDuLieuDataGridViewNhaXuatBan()
        {
            List<NhaXuatBanDTO> list = new List<NhaXuatBanDTO>();
            list = NhaXuatBanService.GetAllNhaXuatBan();
            foreach (NhaXuatBanDTO nhaxuatban in list)
            {
                DataGridViewRow row = new DataGridViewRow();
                row.CreateCells(dgvNhaXuatBan);
                row.Cells[0].Value = nhaxuatban.MaNhaXuatBan.ToString();
                row.Cells[1].Value = nhaxuatban.TenNhaXuatBan.ToString();
                dgvNhaXuatBan.Rows.Add(row);

            }

        }
        private void SetUpDataGridViewThemNhaXuatBan()
        {
            dgvThemNhaXuatBan.BackgroundColor = Color.White;
            dgvThemNhaXuatBan.ColumnCount = 2;
            dgvThemNhaXuatBan.Columns[0].Name = "STT";
            dgvThemNhaXuatBan.Columns[1].Name = "Tên Nhà Xuất Bản";

            dgvThemNhaXuatBan.Columns[0].Width = 80;
            dgvThemNhaXuatBan.Columns[1].Width = 240;


            dgvThemNhaXuatBan.Columns[0].ReadOnly = true;
            dgvThemNhaXuatBan.MultiSelect = true;
            dgvThemNhaXuatBan.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            dgvThemNhaXuatBan.DefaultCellStyle.SelectionBackColor = Color.Ivory; //Color.Silver;
            dgvThemNhaXuatBan.DefaultCellStyle.SelectionForeColor = Color.Black;

        }
        private void UpdateSoThuTuDataGridViewThemNhaXuatBan()
        {
            for (int i = 0; i < dgvThemNhaXuatBan.Rows.GetRowCount(DataGridViewElementStates.Visible) - 1; i++)
            {
                dgvThemNhaXuatBan.Rows[i].Cells[0].Value = i + 1;
            }
        }
        private void AnHienButtonSave()
        {
            if (dgvThemNhaXuatBan.Rows.Count - 1 != 0)
            {
                btnSave.Enabled = true;
            }
            else
            {
                btnSave.Enabled = false;
            }
        }
        private void AnHienButtonXoa()
        {
            if (dgvThemNhaXuatBan.Rows.Count - 1 != 0)
            {
                btnXoa.Enabled = true;
            }
            else
            {
                btnXoa.Enabled = false;
            }
        }
        private void QuanLyNhaXuatBan_Load(object sender, EventArgs e)
        {
            dgvNhaXuatBan.Rows.Clear();
            SetUpDataGridViewNhaXuatBan();
            LoadDuLieuDataGridViewNhaXuatBan();
            SetUpDataGridViewThemNhaXuatBan();
           
            if (dgvThemNhaXuatBan.Rows.Count - 1 == 0)
            {
                btnSave.Enabled = false;
                btnXoa.Enabled = false;
            }
        }

        private void dgvNhaXuatBan_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            NhaXuatBanDTO nhaxuatbanDTO = new NhaXuatBanDTO();
            nhaxuatbanDTO.MaNhaXuatBan =int.Parse( dgvNhaXuatBan.Rows[dgvNhaXuatBan.SelectedCells[0].RowIndex].Cells[0].Value.ToString());
            nhaxuatbanDTO.TenNhaXuatBan = dgvNhaXuatBan.Rows[dgvNhaXuatBan.SelectedCells[0].RowIndex].Cells[1].Value.ToString();
            NhaXuatBanService.Update(nhaxuatbanDTO);
        }

        private void btnXoaNhaXuatBan_Click(object sender, EventArgs e)
        {
            if (dgvNhaXuatBan.SelectedRows[0].IsNewRow == false)
            {
                int manhaxuatban = int.Parse(dgvNhaXuatBan.SelectedRows[0].Index.ToString());
                  DialogResult r=MessageBox.Show("Bạn thực sự muốn xóa?","Thông báo",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
                  if (r == DialogResult.Yes)
                  {
                      if (NhaXuatBanService.Delete(manhaxuatban))
                      {
                          dgvNhaXuatBan.Rows.RemoveAt(dgvNhaXuatBan.SelectedRows[0].Index);
                          MessageBox.Show("Đã xóa thành công", "Thông báo");
                      }
                      else
                      {
                          MessageBox.Show("Không được xóa tên nhà xuất bản này", "Thông báo");
                      }
                  }
            }
        }

       

        private void dgvThemNhaXuatBan_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
        {
            AnHienButtonXoa();
            AnHienButtonSave();
        }

        private void dgvThemNhaXuatBan_UserAddedRow(object sender, DataGridViewRowEventArgs e)
        {
            UpdateSoThuTuDataGridViewThemNhaXuatBan();
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            if (dgvThemNhaXuatBan.SelectedRows[0].IsNewRow == false)
            {

                int n = dgvThemNhaXuatBan.Rows.IndexOf(dgvThemNhaXuatBan.SelectedRows[0]);

                MessageBox.Show(n.ToString());
                dgvThemNhaXuatBan.Rows.Remove(dgvThemNhaXuatBan.SelectedRows[0]);
            }
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            List<NhaXuatBanDTO> listNhaXuatBanMoi = new List<NhaXuatBanDTO>();
            for (int i = 0; i < dgvThemNhaXuatBan.Rows.GetRowCount(DataGridViewElementStates.Visible) - 1; i++)
            {
               
                NhaXuatBanDTO nhaxuatbanDTO = new NhaXuatBanDTO();
                //phat sinh ma moi
                nhaxuatbanDTO.MaNhaXuatBan = NumberIdService.NewNumber("NHAXUATBAN");
                NumberIdService.Update("NHAXUATBAN");
                nhaxuatbanDTO.TenNhaXuatBan = dgvThemNhaXuatBan.Rows[i].Cells[1].Value.ToString();
                //INSERT vao co so du lieu
               // NhaXuatBanService.Insert(nhaxuatbanDTO);

                //Them vao danh sach
                listNhaXuatBanMoi.Add(nhaxuatbanDTO);
              
                

              
            }
            //Them danh sach moi vao datagridview nhaxuatban
            foreach (NhaXuatBanDTO nhaxuatban in listNhaXuatBanMoi)
            {
                DataGridViewRow rowmoi = new DataGridViewRow();
                rowmoi.CreateCells(dgvNhaXuatBan);
                rowmoi.Cells[0].Value = nhaxuatban.MaNhaXuatBan.ToString();
                rowmoi.Cells[1].Value = nhaxuatban.TenNhaXuatBan.ToString();
                dgvNhaXuatBan.Rows.Add(rowmoi);
               

            }

            DialogResult r = MessageBox.Show("Nhà Xuất Bản Đã Lưu Thành Công", "Thông Báo", MessageBoxButtons.OK);
            if (r == DialogResult.OK)
            {
                dgvThemNhaXuatBan.Rows.Clear();
            }

        }

        private void dgvThemNhaXuatBan_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)
        {
            AnHienButtonXoa();
            AnHienButtonSave();
        }

        private void dgvNhaXuatBan_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
        {
            dgvNhaXuatBan.Rows[dgvNhaXuatBan.Rows.Count - 1].Selected = true;
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void QuanLyNhaXuatBan_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (btnSave.Enabled)
            {
                DialogResult r = MessageBox.Show("Bạn có muốn lưu dữ liệu các nhà xuất bản mới không?", "Thông Báo", MessageBoxButtons.YesNo);
                if (r == DialogResult.Yes)
                {
                    btnSave_Click(sender, e);
                }
            }
        }
    }
}
